package com.koron.css2.common.bean;

import com.koron.util.Constant;
import org.swan.bean.MessageBean;

public class MessageEntity<T> extends MessageBean<T>{
	
	/**
	 * 当前页
	 */
	private Integer page = 0;
	
	/**
	 * 列表数据总条数
	 */
	private Long totalCount;
	
	private Integer pagecount;
	
	/**
	 * 返回成功消息体
	 * @return
	 */
	public static <T> MessageEntity<T> success(){
		MessageEntity<T> bean = new MessageEntity<T>();
		bean.setCode(Constant.MESSAGE_INT_SUCCESS);
		bean.setDescription("success");
		return bean;
	}
	
	public static <T> MessageEntity<T> success(String description){
		MessageEntity<T> bean = new MessageEntity<T>();
		bean.setCode(Constant.MESSAGE_INT_SUCCESS);
		bean.setDescription(description);
		return bean;
	}
	
	/**
	 * 返回成功消息体
	 * @param data 数据
	 * @return
	 */
	public static <T> MessageEntity<T> success(T data, String description){
		MessageEntity<T> bean = new MessageEntity<T>();
		bean.setCode(Constant.MESSAGE_INT_SUCCESS);
		bean.setDescription(description);
		bean.setData(data);
		return bean;
	}
	
	
	/**
	 * 返回成功消息体
	 * @param data 数据
	 * @param page 起始页
	 * @param pagecount 每页条数
	 * @return
	 */
	public static <T> MessageEntity<T> success(T data, int page, long totalCount, String description){
		MessageEntity<T> bean = new MessageEntity<T>();
		bean.setCode(Constant.MESSAGE_INT_SUCCESS);
		bean.setDescription(description);
		bean.setPage(page);
		bean.setTotalCount(totalCount);;
		bean.setData(data);
		return bean;
	}
	
	/**
	 * 返回失败消息体
	 * @return
	 */
	public static <T> MessageEntity<T> fail(String description){
		MessageEntity<T> bean = new MessageEntity<T>();
		bean.setCode(-1);
		bean.setDescription(description);
		return bean;
	}
	
	/**
	 * 返回失败消息体
	 * @return
	 */
	public static <T> MessageEntity<T> fail(String description, int code){
		MessageEntity<T> bean = new MessageEntity<T>();
		bean.setCode(code);
		bean.setDescription(description);
		return bean;
	}
	
	public Integer getPagecount() {
		return pagecount;
	}

	public void setPagecount(Integer pagecount) {
		this.pagecount = pagecount;
	}

	public Integer getPage() {
		return page;
	}
	public void setPage(Integer page) {
		this.page = page;
	}
	public Long getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(Long totalCount) {
		this.totalCount = totalCount;
	}

}
